﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common.MessageHandlers
{
    /// <summary>
    /// Обработчик сообщения
    /// </summary>
    public interface IMessageHandler
    {
        /// <summary>
        /// Максимальное кол-во попыток обработать сообщение этого типа
        /// </summary>
        int MaxTryCount { get; }
        
        /// <summary>
        /// Обрабатывает сообщение. В случае ошибки должен кидаться Exception
        /// </summary>
        /// <param name="messageBody"></param>
        /// <param name="emailAddresses"></param>
        void Handle(string messageBody, string emailAddresses, string fromAddressName, string messageSubject, string fromAddress = null);

        /// <summary>
        /// Вызывается, если сообщение окончательно не может быть обработано
        /// </summary>
        void OnHandleError(string messageString, Exception exc);
    }
}
